// import com.alibaba.druid.sql.ast.SQLDataType_ptr;
// import com.alibaba.druid.sql.ast.SQLExpr_ptr;
// import com.alibaba.druid.sql.ast.SQLName_ptr;
// import com.alibaba.druid.sql.ast.SQLObjectImpl;
// import com.alibaba.druid.sql.visitor.SQLASTVisitor;
#pragma once
#include "../SQLObjectImpl.h"
#include "SQLAlterTableItem.h"

class SQLAlterTableAlterColumn : virtual public SQLObjectImpl ,virtual public SQLAlterTableItem
{
public:
  SQLName_ptr originColumn;
  SQLColumnDefinition_ptr column;
  BOOL_ptr setNotNull;
  BOOL_ptr dropNotNull;
  SQLExpr_ptr setDefault;
  BOOL_ptr dropDefault;
  BOOL_ptr first;
  SQLName_ptr after;
  SQLDataType_ptr dataType;
  BOOL_ptr toFirst;

  SHAREDOBJECT(SQLAlterTableAlterColumn);
  // @Override
  void accept0(SQLASTVisitor_ptr visitor);

  SQLColumnDefinition_ptr getColumn();

  void setColumn(SQLColumnDefinition_ptr column);

  BOOL_ptr isSetNotNull();

  void setSetNotNull(BOOL_ptr setNotNull);

  BOOL_ptr isDropNotNull();

  void setDropNotNull(BOOL_ptr dropNotNull);

  SQLExpr_ptr getSetDefault();

  void setSetDefault(SQLExpr_ptr setDefault);

  BOOL_ptr isDropDefault();

  void setDropDefault(BOOL_ptr dropDefault);

  SQLName_ptr getOriginColumn();

  void setOriginColumn(SQLName_ptr x);

  BOOL_ptr isFirst();

  void setFirst(BOOL_ptr x);

  SQLName_ptr getAfter();

  void setAfter(SQLName_ptr x);

  SQLDataType_ptr getDataType();

  void setDataType(SQLDataType_ptr x);
};
